Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Выбор случайной записи (PHP+MySQL) (KonstRuctor)
Author Message
KonstRuctor
Заглянувший



Joined: 22 May 2006
Posts: 11
Карма: 0
   поощрить/наказать


PostPosted: Mon May 22, 2006 2:35 am (написано за 6 минут 56 секунд)
   Post subject: Выбор случайной записи (PHP+MySQL)
Reply with quote

Баннеры выводятся в двух местах: в шаблоне и в теле страницы.
Вывожу так:
Code (php): скопировать код в буфер обмена
$result=mysql_query (www.php.net/mysql_query)("SELECT code
                     FROM table
                     WHERE type = 'flash'
                     AND active = '1'
                     ORDER by rand() LIMIT 1"
);
По идее при перезагрузке страницы каждый раз должен выводится рандомный баннер.
Всего в базе 3 баннера.

Тот, что в теле страницы -- выводится рандомно.
Тот, что в шаблоне -- выводится все время первый из желаемых.

Поясню -- index.php:
Code (php): скопировать код в буфер обмена
include('headers_func.php');
print_header(); //

//

print_footer(); //
 
Где искать косяк?
Back to top
View user's profile Send private message
Денис Радченко
Заглянувший



Joined: 30 Aug 2006
Posts: 19
Карма: 1
   поощрить/наказать

Location: Чебоксары

PostPosted: Thu Aug 31, 2006 2:39 pm (спустя 3 месяца 9 дней 12 часов 4 минуты; написано за 3 минуты 27 секунд)
   Post subject:
Reply with quote

KonstRuctor Сталкивался с этой проблеммой когда-то, как я понял данный баг из-за некоректной работы RAND() в mySQL. Должен работать такой код.
Code (php): скопировать код в буфер обмена
$total = @mysql_result (www.php.net/mysql_result)(mysql_query (www.php.net/mysql_query)("SELECT COUNT(*) FROM table WHERE type='flash' && active = 1"),0,0);
$rand  = rand (www.php.net/rand)(0,$total-1); // Перед этим нужно инициализировать генератор
$result=mysql_query (www.php.net/mysql_query)("SELECT code
                     FROM table
                     WHERE type = 'flash'
                     AND active = '1'
                     LIMIT {$rand},1"
);
Back to top
View user's profile Send private message
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Thu Aug 31, 2006 2:51 pm (спустя 12 минут; написано за 1 минуту 47 секунд)
   Post subject:
Reply with quote

KonstRuctor
раз баннеров всего три - может, лучше сделать выборку всего и рандом на PHP ? Мне доводилось сталкиваться с тем, что MySQL (4.1.12, кажется) иногда возвращал 0 записей. Кроме того, ORDER BY замедляет запрос.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML